列出package 大小

du -sh /data/app/*

列出大小並且排序

su -c "du -k -d 1 /data/ | sort -nr"

android 用 adb 列出安裝程式,移除程式
你可以使用 ADB(Android Debug Bridge)來列出已安裝的應用程式,並移除指定的應用。以下是常用指令:

📋 列出已安裝的應用程式

bash

adb shell pm list packages
  • 列出所有安裝的套件名稱(package name)。
  • 加上參數可以過濾:
    • 系統應用:adb shell pm list packages -s
    • 使用者安裝:adb shell pm list packages -3
    • 關鍵字過濾:adb shell pm list packages | grep keyword

🗑️ 移除指定應用程式

bash

adb shell pm uninstall <package_name>
  • 例如移除 Facebook:
    bash
    adb shell pm uninstall com.facebook.katana
    
  • 如果是系統應用(需 root 或使用 --user 0):
    bash
    adb shell pm uninstall --user 0 <package_name>
    

🔍 查找 package name 的方式

如果你不知道應用的 package name,可以:

  1. 使用 adb shell pm list packages | grep appname
  2. 或者先安裝應用,然後用 adb shell dumpsys package 查找詳細資訊。

如何查看 package佔用空間?

你可以使用 ADB 指令來查看 Android 裝置上某個應用程式(package)所佔用的空間。以下是幾種方法:

📦 查看單一應用的空間使用情況

bash

adb shell dumpsys package <package_name>
  • 這個指令會輸出大量資訊,包括安裝路徑、使用者資料路徑、cache 路徑等。
  • 雖然不會直接顯示空間大小,但你可以根據路徑手動查詢。

📊 精確查看空間大小(推薦)

bash

adb shell du -sh /data/data/<package_name>
adb shell du -sh /data/app/<package_name>*
adb shell du -sh /sdcard/Android/data/<package_name>
  • /data/data/:應用的資料目錄(設定、資料庫等)
  • /data/app/:APK 安裝檔案
  • /sdcard/Android/data/:外部儲存空間使用(如快取)

    注意:部分路徑需要 root 權限才能存取。

🧹 額外:查看所有 package 的空間使用(需 root)

bash

adb shell pm path <package_name>
adb shell ls -l <APK 路徑>

或使用:
bash

adb shell du -sh /data/app/*

這會列出所有安裝 APK 的大小。

adb如何安裝 app

你可以使用 ADB 安裝 APK 檔案到 Android 裝置,以下是完整步驟與指令:

📱 安裝 APK 到 Android 裝置

1. 確保裝置已連接並開啟 USB 偵錯

  • 在 Android 裝置上啟用「開發者選項」→ 開啟「USB 偵錯」
  • 使用 USB 或 Wi-Fi 連接裝置

2. 確認裝置已連線

bash

adb devices
  • 若看到裝置序號,表示連線成功

3. 安裝 APK 檔案

bash

adb install <path_to_apk>

例如:
bash

adb install myapp.apk

4. 強制重新安裝(覆蓋舊版本)

bash

adb install -r myapp.apk

5. 安裝到特定使用者(例如使用者 0)

bash

adb install --user 0 myapp.apk

🧪 檢查安裝結果

安裝成功會顯示:
Code

Success

失敗可能會顯示:
Code

INSTALL_FAILED_VERSION_DOWNGRADE
INSTALL_FAILED_INVALID_APK

這些錯誤通常與簽章、版本號或裝置相容性有關。
需要我幫你寫一個自動化批次腳本來安裝多個 APK 嗎?或者你想在 CI/CD 中整合這個流程?

指定安裝到特定的儲存目錄

在 Android 上使用 ADB 安裝 APK 時,無法直接指定任意的儲存目錄。安裝位置是由 Android 系統根據裝置的儲存策略自動決定的。不過,你可以透過以下方式影響應用的安裝位置:

📍 1. 使用 -s 參數安裝到 SD 卡(僅限支援的應用)

bash

adb install -s myapp.apk
  • -s 表示嘗試將應用安裝到「外部儲存」(通常是 SD 卡或模擬 SD 卡)。
  • 前提條件
    • APK 的 AndroidManifest.xml 中必須包含:
      xml
      <manifest ... android:installLocation="preferExternal" ... >
      
    • 裝置必須支援將應用安裝到外部儲存。

⚙️ 2. 修改預設安裝位置(不建議長期使用)

你可以暫時更改裝置的預設安裝位置:
bash

adb shell pm set-install-location 2
  • 0 = 自動(預設)
  • 1 = 僅內部儲存
  • 2 = 僅外部儲存

    ⚠️ 警告:這可能導致某些應用無法正常運作,請小心使用。
    查詢目前設定:
    bash

adb shell pm get-install-location

📦 3. 使用 pm install 搭配路徑(進階用法)

如果你已經將 APK 推送到裝置上(例如 /sdcard/Download/myapp.apk),可以這樣安裝:
bash

adb shell pm install /sdcard/Download/myapp.apk

但這仍然無法指定安裝到任意資料夾,因為 Android 的應用安裝流程會自動將 APK 解壓並安裝到 /data/app//mnt/asec/ 等系統管理的目錄中。

✅ 總結

方法 是否可行 限制
adb install -s ✅ 有條件可行 APK 必須支援 preferExternal
pm set-install-location ✅ 可行但不建議長期使用 可能影響系統穩定性
指定任意資料夾安裝 ❌ 不可行 Android 安全模型不允許

如何查package name

你可以透過以下幾種方式使用 ADB 查詢 Android 裝置上應用程式的 package name(套件名稱)

🔍 方法一:列出所有已安裝的套件

bash

adb shell pm list packages

這會列出所有安裝的應用,例如:
Code

package:com.android.chrome
package:com.facebook.katana
package:com.whatsapp

你可以搭配 grep 過濾關鍵字:
bash

adb shell pm list packages | grep facebook

📱 方法二:查詢特定應用的詳細資訊

如果你知道應用的部分名稱,可以用這個指令找出詳細資訊:
bash

adb shell dumpsys package <package_name>

例如:
bash

adb shell dumpsys package com.facebook.katana

這會顯示該應用的詳細資訊,包括版本、安裝路徑、權限等。

🖱️ 方法三:從應用畫面取得 package name

  1. 在 Android 裝置上開啟「設定」→「應用程式」→ 選擇目標應用
  2. 點選「應用資訊」→ 查看「套件名稱」(部分裝置需透過開發者工具或第三方 App 查看)

🧰 方法四:使用第三方工具(開發者常用)

  • App Inspector(Google Play 上可下載)
  • APK Info
  • Package Name Viewer
    這些工具可以直接顯示所有應用的 package name,對開發者非常方便。
    如果你有某個 APK 檔案,也可以用這個指令查出它的 package name:
    bash
aapt dump badging myapp.apk | grep package

⚠️ aapt 是 Android SDK Build Tools 的一部分,需先安裝。
需要我幫你寫一個腳本來快速查詢並選擇 package 嗎?還是你想查某個特定 App 的 package?

列出\data\下每一個資料夾大小

你可以使用 ADB 搭配 du 指令來列出 Android 裝置中 /data/ 目錄下每個資料夾的大小。不過,這通常需要 root 權限,因為 /data/ 是系統保護目錄。

📦 列出 /data/ 下每個資料夾的大小

bash

adb shell su -c "du -h -d 1 /data/"
  • su -c:以 root 權限執行(需裝置已 root)
  • du -h:顯示人類可讀格式(KB、MB、GB)
  • -d 1:只列出第一層資料夾大小(不遞迴)
    範例輸出:
    Code
12M     /data/app
4.0K    /data/anr
1.2G    /data/data
...

🛠️ 如果沒有 root 權限

你可以列出 /sdcard/Android/data/(外部儲存)下的資料夾大小:
bash

adb shell du -h -d 1 /sdcard/Android/data/

這對於分析使用者資料(快取、下載等)很有幫助。

📁 額外:列出 /data/data/ 下每個應用資料夾大小(需 root)

bash

adb shell su -c "du -h -d 1 /data/data/"

這可以幫你找出哪些應用佔用最多空間。
需要我幫你寫一個批次腳本,自動列出並排序資料夾大小嗎?或者你想把結果導出成檔案?
並且依照大小排序
你可以使用以下 ADB 指令來列出 /data/ 下每個資料夾的大小,並依照大小排序。這需要 root 權限

📊 列出 /data/ 下資料夾大小並排序(需 root)

bash

adb shell su -c "du -k -d 1 /data/ | sort -nr"

說明:

  • du -k:以 KB 為單位顯示大小(更容易排序)
  • -d 1:只列出第一層資料夾
  • sort -nr:依照數字大小(KB)由大到小排序

📁 範例輸出:

Code

1256780 /data/data
456000  /data/app
32000   /data/dalvik-cache
4000    /data/anr
...

這樣你就能快速找出哪些資料夾佔用最多空間。

✅ 額外提示:分析 /data/data/(應用資料)

bash

adb shell su -c "du -k -d 1 /data/data/ | sort -nr"

這會列出每個應用的資料目錄大小,例如:
Code

204800  /data/data/com.whatsapp
102400  /data/data/com.facebook.katana
...

如果你想把結果導出成檔案、或自動分析 top N 應用,我可以幫你寫一個完整的 shell script。要不要來個 class-based 版本,順便加上 log 和錯誤處理?

清除暫存檔案與快取資料

在 Android 裝置上,ADB 可以幫你清除暫存檔案(temp files)或模擬的「資源回收桶」內容。雖然 Android 沒有真正的「資源回收桶」,但你可以清除以下幾類暫存與垃圾資料:

🧹 清除暫存檔案與快取資料

1. 清除所有應用的快取(需 root)

bash

adb shell su -c "pm trim-caches 99999999999"
  • 這會嘗試清除所有應用的快取資料。
  • 99999999999 是最大允許空間,代表「盡可能清除」。

2. 清除特定應用的快取

bash

adb shell pm clear <package_name>
  • 例如:
    bash
    adb shell pm clear com.facebook.katana
    
  • 這會清除該應用的快取與使用者資料(等同於「清除資料」)。

🗑️ 清除模擬「資源回收桶」內容

Android 沒有真正的資源回收桶,但某些檔案管理器或相簿 App 會建立類似功能。你可以手動清除這些資料夾:
bash

adb shell rm -rf /sdcard/.Trash/
adb shell rm -rf /sdcard/DCIM/.thumbnails/
adb shell rm -rf /sdcard/Android/data/*/cache/

⚠️ 注意:這些指令會永久刪除檔案,請小心使用。

📁 清除 Download、Temp 類資料夾

bash

adb shell rm -rf /sdcard/Download/*
adb shell rm -rf /sdcard/tmp/*

你也可以加上 find 指令刪除特定副檔名:
bash

adb shell find /sdcard/ -name "*.log" -delete

✅ 建立清理腳本